package com.yujiahao.bigdata.rdd.action

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
/**
    TODO 行动算子 foreach
      TODO 为什么将RDD的方法称之为算子，主要是为了和Scala集合中的方法区分开
        Scala 的方法是单点操作，RDD是分布式操作，（乱序）
 */
object Spark01_Action_Froeach {
  def main(args: Array[String]): Unit = {
    //TODO 1、获得Spark环境的连接
    // 参数解读：setAppName("当前执行程序的名字").setMaster("当前的环境")
    // 分布式环境的基本架构为 主 - 从
    val conf: SparkConf = new SparkConf().setAppName("WordCount").setMaster("local[*]")
    val sc: SparkContext = new SparkContext(conf)
    //TODO 3、业务逻辑
    val rdd: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4), 2)

    //乱序
    rdd.foreach(println)
    println("--------------分割线------------------")
    //顺序
    rdd.collect().foreach(println)
    //TODO 2、关闭Spark环境的连接
    sc.stop()
rdd.distinct()
  }

}
